CHIEF'S GENERIC INSTALL for WINDOWS v2.40 ----------------------------------------- (c) 1994, Dr. Abimbola A. Olowofoyeku (The African Chief) ---------------------------------------------------------- Files in the package -------------------- 1. INSTALL.EXE (Windows install executable) 2. WINSTALL.HLP (basic help file for the installer) 3. SETUP.EXE (OPTIONAL small loader for INSTALL.EXE) 4. SAMPLExx.INF (sample INF files for WINSTALL.INF) 5. INSTALL.TXT (this file) What is CHIEF'S GENERIC INSTALL? -------------------------------- Chief's Generic Install (hereinafter referred to as "Install") is a generic program for installation of Windows applications. Install is an "off-the-shelf" installation suite. The program will copy files from floppy disks (or a directory on a hard disk) to the destination directory. If the files are compressed with Microsoft's COMPRESS.EXE they will be decompressed automatically.In this respect Install uses the routines in LZEXPAND.DLL. If the files are not compressed, they will simply be copied. ----- NOTE: ----- The main executable is INSTALL.EXE - and that is all that needs to be run. I have supplied SETUP.EXE as an optional loader. All it does is to; [a] display a "initializing install ..." message [b] copy the necessary Install files (INSTALL.EXE, WINSTALL.INF, WINSTALL.HLP) to the TEMP directory. For these purposes, these 3 files may be compressed on the install disks - but they must retain their real names (as above) - except INSTALL.EXE, which if compressed with the -r option, can be called "INSTALL.EX_" (the original name will be restored by SETUP.EXE) [c] load the copy of INSTALL.EXE from the TEMP directory, with the parameters necessary for it to work properly if run in this way Is this useful? "Not really" is the answer. It may help to speed up loading if the user is using a slow floppy disk (or if INSTALL.EXE gets bigger than it is now) - but at the moment, it does not really speed up things. It may help in cases where there are many floppy disks, and system memory is low (in case Windows needs to read some parts of INSTALL.EXE again from disk). This will rarely (if ever) occur - because the code segment in INSTALL.EXE is PERMANENT (not discardable). So - SETUP.EXE is here only for future purposes - and for people who prefer to type "A:SETUP" instead of "A:INSTALL". --------------------- --------------------- Using Chief's Install --------------------- --------------------- I have tried to make Install as easy to use as possible. You only need to take the following steps; 1. Create your installation disk set by placing your application's files on them (up to 20 installation disks are supported). 2. You may or may not compress the files with COMPRESS.EXE (it is immaterial whether you do so or not). If files are compressed and an underscore is used in the compressed file names, these names will only be converted to the original file names if they were compressed with the -r option. 3. Create an installation information file in ASCII format, using a text editor. The file should be called WINSTALL.INF, and should be in the format described below. 4. Run the Install program. That's it folks! Restrictions/Features --------------------- 1. You can only install into any combination of the following; (a) ONE destination directory, and up to 20 subdirectories under it (b) the Windows directory (c) the Windows SYSTEM directory (d) the TEMP directory 2. Only a maximum of 20 installation disks are supported. Install will prompt for the disks as they are required. 3. Install will optionally offer to put the destination directory into the "PATH" statement in AUTOEXEC.BAT 4. Install will optionally create a Program Manager group file, and icons for any supplied file(s) - .EXEs, README files, etc. 5. Install will optionally run any supplied program(s) during the installation, as part of the installation process. 6. Install will optionally run any supplied program(s) immediately after the installation is complete 7. The stipulated format of the WINSTALL.INF file must be followed strictly. 8. Install allows you to supply on-line for the installation. You have to create a Windows help file called WINSTALL.HLP. This help file can be accessed by clicking on the "HELP" button. A simple one is supplied. You can either use that, or create your own. If no WINSTALL.HLP file is found in the path, then the "HELP" button is removed from the Install window. 9. Install will check whether there is sufficient space on the target drive - based on information which you supply as to how much disk space your application requires. If you need extra temporary disk space for the installation, Install can check for this also. 10. Install will make entries in any INI (or other) file(s) specified by you. Up to 20 entries can be made. Do NOT use this feature to insert an entry which may already exist - the old entry will be deleted and replaced by the new one (e.g., do NOT use it for "DEVICE=" lines in SYSTEM.INI The format of WINSTALL.INF -------------------------- WINSTALL.INF is the configuration file for the installation. You need to follow the instructions on this file carefully, otherwise, Install will not work correctly. The best thing is to edit the sample files which I have provided. They contain sufficient comments for you to understand them. WINSTALL.INF is a standard ASCII file, in the following format; 1. Any line beginning with a ";", or "[" or "REM" is ignored 2. Empty lines are ignored e.g., these lines will be ignored [This line will be ignored] ; So will this line REM so will the one just above me, and me as well! 3. Each line must not contain more than 220 characters 4. There are RESERVED WORDS for each valid entry - as follows; -------------- $TITLE : your program's title $TARGET : the default target directory $SPACE : the amount disk space needed for the install $SWAP-SPACE : any temporary swap space needed for the install $DISK : 1-20 = the installation disks and their contents $DEST : points to the target directory chosen by the user $WINDIR : points to the Windows directory $SYSDIR : points to the Windows SYSTEM directory $TEMPDIR : points to the TEMP directory $INI : text file(s) to write entries into $GROUP : title of the Program Manager group $ICON : file(s) to create Program Manager icons for $PRE-EXEC : program(s) to run DURING the installation $EXEC : program(s) to run AFTER the installation $CLEANUP : file(s) to be deleted AFTER the installation $WINDOW : whether INSTALL should start MAXIMIZEd or not $WINDOW-BACKGROUND : to change the background color of the window $TEXT-BACKGROUND : to change the background color of the text $SETCHECKBOX : to automatically set the checkbox for creation of Program Manager group $NO-END-DIALOG : to disable the final "installation completed" dialog. $NO-PATH-DIALOG: to disable dialog to update AUTOEXEC.BAT RESERVED WORD ************* $DISK ----- You use this reserved word to specify the disk(s) in the installation set, and the file(s) which should be copied from them. Each file name or file specification should be separated from the next one by a semi-colon. You can use the wildcard character "*" in this regard. The format for specifying the disk(s) is this; $DISK n = where: n = numbers from 1 to 20 = the file specifications the easiest thing to do would be to just specify "*.*" - to copy all the files - but you can be more specific EXAMPLES: $DISK 1 = *.* $DISK 2 = *.DLL;*.HLP;*.DRV;WS*.*;EXPAND.EXE;COMPRESS.EXE;README.TXT $DISK 3 = HELP.DOC;*.FFF * If you specify a file that does not exist on the disk, it will just be ignored. * A maximum of 30 file specifications is allowed on each "$disk" line - but note that each line cannot be longer than 220 characters in total. * Compressed files with underscores in the filename will have the filenames expanded into the name of the original files only if the original files were compressed with the -r option * NOTE: * --------- * It is advisable (but not necessary) to use underscores in compressed file names. This is only for the (cosmetic) purpose of enabling Install to differentiate between compressed and uncompressed files when displaying date and size of existing files concerning which the user is being prompted for over-write permission. If a compressed file can be identified in this way, Install will not display the size of the compressed file in such cases, since it might confuse the user. If the compressed file name is the same as that of the original file, then Install cannot make this type of distinction. RESERVED WORD ************* $TITLE ------ This us used to specify the name or title of your application. This is what will appear in the title of the installation program's window - You can have only ONE such line. - e.g.; $TITLE=Great Program v1.20 RESERVED WORD ************* $SPACE ------ Use this to specify the amount of disk space needed for the installation. The amount should be in BYTES and should only contain whole numbers (no spaces, no letters, and no decimals). This information is used by Install to warn the users of the amount of space that they need to have free on their disks, and to show the progress of the installation in the "percentage meter". Install will check to see that the specified amount of space exists on the target drive before installation begins. If there is insufficient space, Install will abort with an error message. There is no need for the number to correspond exactly with the actual required number of bytes - a difference of up to 2% of the size of your application (plus or minus) is allowed, and such differences will be catered for automatically. In fact, it is always good to add about 1% to the actual disk space needed - because of the vagaries of disk cluster sizes, it may be wise to over-estimate the disk space needed (a little bit of trial and error is in order here). You can have only ONE such line. e.g., $SPACE=2002003 $SWAP-SPACE ----------- Use this to specify the amount of any temporary swap disk space needed for the installation. The amount should be in BYTES and should only contain whole numbers (no spaces, no letters, and no decimals). This information is used by Install to warn the users of the amount of space that they need to have free on their disks - bit it does not show in the "percentage meter". You can have only ONE such line. e.g., $SWAP-SPACE=0 RESERVED WORD ************* $TARGET ------- This is used to specify the name of the DEFAULT target directory for the installation. The user will be able to change this at run time. - e.g., $TARGET=C:\MYPROGRAM If the target directory does not exist Install will create it - but note that it will not create directories recursively. You can have only ONE such line. Other Directories ----------------- By default, ALL the files will be installed into whatever is the target directory chosen by the user. You can however specify that certain files should be installed into subdirectories UNDER THE TARGET DIRECTORY TREE, or into the WINDOWS DIRECTORY, or into the WINDOWS SYSTEM DIRETORY, or into the TEMP DIRECTORY. To use this, you use the $DEST, $WINDIR, $SYSDIR, $TEMPDIR reserved words. RESERVED WORD ************* $DEST ----- [i] Where ever this appears at the beginning of a line, the following take place; (a) "$DEST" is replaced with the target directory selected by the user. For example, entry of "$DEST\BIN=PROG.EXE", if the user installed to "C:\NEWPROG", becomes "C:\NEWPROG\BIN=PROG.EXE" (b) anything after the "=" sign is taken as the file(s) to be installed into that directory (instead of into the target directory). There can be up to 14 file names, each separated by a semi-colon (NO wildcards are allowed here!). The sub directories will be created when necessary - but note that the order in which they are specified may be important - if there are deep levels of nesting, the ones higher up the tree must be specified first. You can have up to 20 such lines. [ii] Where ever this appears elsewhere in a line, the "$DEST" is replaced with the target directory selected by the user. This use of the $DEST reserved word is only useful in the "$ICON", "$INI", and "$EXEC" lines. RESERVED WORD ************* $WINDIR ------- [i] Whenever this appears at the beginning of a line, the files on that line are installed to the Windows directory (instead of the target directory). There can be up to 14 file names, each separated by a semi-colon (no wildcards are allowed here). You can have only ONE such line. [ii] Where ever this appears elsewhere in a line, the "$WINDIR" is replaced with the Windows directory. This use of the $WINDIR reserved word is only useful in the "$ICON", "$INI", and "$EXEC" lines. RESERVED WORD ************* $SYSDIR ------- [i] Whenever this appears at the beginning of a line, the files on that line are installed to the Windows SYSTEM directory (instead of the target directory). There can be up to 14 file names, each separated by a semi-colon (no wildcards are allowed here). You can have only ONE such line. [ii] Where ever this appears elsewhere in a line, the "$SYSDIR" is replaced with the Windows SYSTEM directory. This use of the $SYSDIR reserved word is only useful in the "$ICON", and "$EXEC" lines. RESERVED WORD ************* $TEMPDIR -------- [i] Whenever this appears at the beginning of a line, the files on that line are installed to the TEMP directory (instead of the target directory). There can be up to 14 file names, each separated by a semi-colon (no wildcards are allowed here). You can have only ONE such line. [ii] Where ever this appears elsewhere in a line, the "$TEMPDIR" is replaced with the TEMP directory. This use of the $TEMPDIR reserved word is only useful in the "$INI", and "$EXEC" lines. RESERVED WORD ************* $INI ---- This is used to specify any ASCII files that configuration information should be written into. Normally, these will be INI files of some sort, but they can be any file, as long as it is in ASCII format. You have have up to 20 "$INI" lines - and each line MUST be in the format prescribed below; * each line must contain 4 entries - each separated with a semi-colon [a] the first entry is the NAME of the file to be written to - a full path must be supplied - otherwise, the file is presumed to be in the WINDOWS directory. You can use "$DEST" here, to specify files in the directory tree of the target directory. If the file does not exist, it is created. [b] the second entry is the title of the section ("Application name" in Windows API speak) that should contain the entry. [c] the third entry is the name of the entry you wish to make ("Keyname" in Windows API speak) [d] the fourth entry is the string that you wish to associate with the entry. - e.g., $INI=C:\AUTOEXEC.BAT;MYPROG;SET PROGDIR;$DEST $INI=$DEST\MYPROG.INI;CONFIG;STARTUP;PROG.EXE /FE=XDS.XCL $INI=WIN.INI;EXTENSIONS;GFD;$DEST\BIN\GFD2.EXE ^.GFD RESERVED WORD ************* $GROUP ------ This is used to specify the name of the Program Manager Group in which the icons will be created. This can be the name of an existing group (e.g., "Accessories", "Main", etc.) in which case, the items will just be added to the ones already in that group. However, you may specify a completely new group. If this does not exist, it will be created (e.g., "MyProgram"). You can have only ONE such line. RESERVED WORD ************* $ICON ----- This is used to specify the names of the files for which you want Program Manager icons to be created. There can be a maximum of 12 icons. Each $ICON line should contain only ONE entry. This is the name of the file to create an icon for (this could be a program file plus a parameter or any other file). This should be followed by a semi-colon, and after the semi-colon, the title that Program Manager should give to the icon. Each name should be separated by a semi-colon. You can put them all one one "$ICON" line - or you can have up to 12 "$ICON" lines. e.g., $ICON=MYMAIN.EXE;Cool Prog v1.20 $ICON=WINHELP.EXE MYPROG.HLP;My help file $ICON=NOTEPAD.EXE ORDER.FRM;Order Form $ICON=NOTEPAD.EXE REGISTER.TXT;Registration documentation $ICON=NOTEPAD.EXE README.TXT;Readme file RESERVED WORD ************* $EXEC ----- This line is optional. It specifies the name(s) of any program(s) that should be run immediately after the installation is completed (with any optional parameters to be passed to the programs). You can have only ONE such line. - e..g., $EXEC=CONFIG.EXE You can put as many as 5 programs on this line. In such cases, each one must be terminated by a semi-colon - e.g., $EXEC=CONFIG.EXE /DIR=C:\TEMP; MYPROG1.EXE; MYPROG2.EXE /NEW In the above example, there are 3 programs to be run. The first and the third are run with parameters, while the second one has no parameter. $PRE-EXEC --------- This line is optional. It specifies the name(s) of any program(s) that should be run during the installation, as part of the installation process. These programs will be run immediately after the files have been copied from the disks. Install will try to wait for these programs to terminate, before continuing. Such attempted waiting will work for Windows programs, but will fail if used to run DOS programs under OS/2. - e..g., $PRE-EXEC=EXPAND.EXE $DEST\REE.BIN $CLEANUP ------- This is optional. It specifies the name(s) of any temporary files(s) that should be deleted after the installation. Such deletions (if any) will be done immediately after any $PRE-EXEC lines have executed and returned. If there is no $PRE-EXEC line, then the deletions will be done after the $INI lines have been processed. If there are no $INI lines, then the deletions will be immediatelt after the $DISK lines have been processed. If the specified files do not exist, they are simply ignored. There can be up to 20 $CLEANUP lines. Each line should contain only ONE entry. The only other reserved words permissible on these lines are $DEST and $TEMPDIR. I will *never* add $WINDIR or $SYSDIR to this list, because I can see no reason why one would want to delete files from people's Windows or SYSTEM directories. Use this reserved word with care. I accept no responsibility for any problems caused by using it. - e..g., $CLEANUP=$TEMPDIR\4EDE6.$$$ $CLEANUP=$TEMPDIR\54DE6.$$$ $CLEANUP=$DEST\TEMPFIL.INI The $TEMPDIR can be used here with the Install program files in cases where you choose to use SETUP.EXE as a loader - e.g., $CLEANUP=$TEMPDIR\INSTALL.EXE $CLEANUP=$TEMPDIR\WINSTALL.INF $CLEANUP=$TEMPDIR\WINSTALL.HLP This way, Install can cleanup the files which have been copied by SETUP.EXE to the TEMP directory. RESERVED WORD ************* $WINDOW ------- This line is optional. It should specify whether you want Install to start up maximized or not. If the entry here is "MAXIMIZE" then Install will start maximized - otherwise it will just start normally. You can have only ONE such line. RESERVED WORD ************* $NO-END-DIALOG -------------- This line is optional, and is not very useful. All it does is to suppress the final dialogs which inform the user about whether the installation was successful or not, and that the installation is completed. The default behaviour of Install is to present these dialogs to the user. Use this reserved word to disable that feature. If this feature is used, the warning dialog that comes up if the size of the files actually installed is less than 98% of the size stated in the $SPACE reserved word is also disabled. This line takes no parameter. RESERVED WORD ************* $NO-PATH-DIALOG --------------- This line is optional. It disables the dialog box which asks the user whether the target directory should be added to the PATH statement in AUTOEXEC.BAT. The default behaviour is to present this dialog. Use this reserved word to disable that feature. This line takes no parameter. RESERVED WORD ************* $SETCHECKBOX ------------ This line is optional. It automatically checks the checkbox titled "click here to create Program Manager item". This line takes no parameter. RESERVED WORD ************* $WINDOW-BACKGROUND ------------------ This line is optional. It can be used to set the background color of the main window of the Installer. The default is to have a white background. Because the background is a Windows brush handle, the only valid values for this setting are 0,1,2,3, or 4 0 = White 1 = Light Grey 2 = Grey 3 = Dark Grey 4 = Black If you use this to change the window background, be sure to also set the $TEXT-BACKGROUND (below) to an appropriate setting. For example, if this setting is 1 (light grey) then the text background should be set to 192,192,192 (so that the window and text backgrounds should match). e.g., $WINDOW-BACKGROUND=1 $TEXT-BACKGROUND=192,192,192 $WINDOW-BACKGROUND=2 $TEXT-BACKGROUND=128,128,128 RESERVED WORD ************* $TEXT-BACKGROUND ---------------- This line is optional. It can be used to set the background color of the text in the main window of the Installer. The default is to have a white background. The color used here can either be; [a] one long integer value (you can use hexadecimal values in Pascal notation) - see below for explanation or [b] three values represent RGB (red, green, blue) values. If using RGB values, they should be separated by commas, or semi-colons (e.g: 128,128,128 - for a dark gray background) If using a hexadecimal value (those that begin with $00 and then are followed by SIX values). The SIX values here represent Blue, Green, Red - or reversed RGB. In this respect, "FF" turns the color to full intensity, "00" turns it off, and any other value varies the intensity. Note that the color that results from any value depends on the display driver of the user (particularly the number of colors). For a 256 color setup, you can use the following values; White : $00FFFFFF White : 255,255,255 Black : $00000000 Black : 0,0,0 DarkGray : $00808080 DarkGray : 128,128,128 Red : $000000FF Red : $255,0,0 Blue : $00FF0000 Blue : 0,0,255 DarkRed : 128,0,0 DarkRed : $00000080 DarkPurple : 128,128,240 DarkBlue : 0,0,150 Purple : 200,0,200 Light Cyan : $00FFFF00 Green : $0000FF00 Yellow : $0000FFFF Magena : $00FF00FF LighGray : $006F9FFF Gray : $006688FF e.g., $TEXT-BACKGROUND=128,128,128 $TEXT-BACKGROUND=$00FFFFFF ////////////////////////////////////////////// LICENSE ------- Chief's Install is released as "ChiefWare". This means that you may use and supply it as the installation routine for any of your applications, as long as; [1] You offer me, by e-mail, a (registered) copy of your application, and, if I am interested in it, you send me a free copy. This point only applies to shareware and freeware applications OR, if your application is a commercial one, You send me a nice and unique postcard from your area [2] My name does NOT appear ANYWHERE in your application's documentation - I am not interested in answering any questions from any of your customers. You may also distribute it freely - as long as; [1] ALL the files which I have supplied are included, and [2] NO ATTEMPT is made to modify or alter ANYTHING in any of the files. [3] You do not charge ANYTHING for distributing this package (disk vendors may charge a reasonable fee, not exceeding $5 (US) for media and duplication). Please note the disclaimers below. DISCLAIMER ---------- I do NOT warantee ANYTHING concerning any of the programs which make up Chief's Install. I accept NO RESPONSIBILITY for ANY LOSS OR DAMAGE of ANY kind, including, but not limited to, losses of a physical, mental, social, financial, marital, or of whatever nature, resulting from the use, or the purported use of Chief's Install, for any purpose whatsoever. You use Chief's Install ENTIRELY AT YOUR OWN RISK, and you supply it to your customers or acquaintances ENTIRELY AT YOUR OWN RISK. If these terms are not acceptable to you, then please DELETE all the files from your disks immediately. BUGS ---- There may be bugs in the program, although I do not know of any extant. I welcome bug reports. I will try to fix them if I can. If I can not fix them, then sorry. Contact address: ---------------- Dr. Abimbola Olowofoyeku 268 Horwood Newcastle Staffs, ST5 5BQ ENGLAND Email: laa12@keele.ac.uk ------------------ Dr. A. Olowofoyeku October 1994 ------------------